/**
 * 获取地址栏参数
 * @returns URLSearchParams
 */
export const geturlparam = () => {
  const p = window.location.href.split('?')[1];
  return new URLSearchParams(p);
};

/**
 * 是否为微信环境
 * @returns Boolean
 */
export function isWeChat(): boolean {
  const ua = navigator.userAgent.toLowerCase();
  return ua.indexOf('micromessenger') !== -1;
}

/**
 * 是否为APP环境
 * @returns Boolean
 */
export const isApp = (): boolean => {
  let result = false;
  try {
    // @ts-ignore
    result = !!window.flutter_inappwebview;
    // if (is_ios()) {
    //   // @ts-ignore
    //   result = !!window.webkit.messageHandlers.closePage;
    // } else {
    //   // @ts-ignore
    //   result = !!window.android.closePage;
    // }
  } catch {
    /** empty */
  }
  return result;
};

/**
 * 是否是ios环境
 * @returns Boolean
 */
export const is_ios = (): boolean => {
  const u = navigator.userAgent;
  return !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
};

interface CopyResult {
  errMsg: string;
}

interface CopyOptions {
  data: string;
}

export function copyHandler(options: CopyOptions): CopyResult {
  // 获取已存在的 textarea 元素并移除
  const pasteText = document.getElementById('clipboard');
  pasteText && pasteText.remove();

  // 创建一个新的 textarea 元素
  const textarea = document.createElement('textarea');
  // 生成随机 ID，避免重复
  textarea.id = `clipboard-${Math.random().toString(36).substr(2, 10)}`;
  textarea.style.position = 'fixed';
  textarea.style.top = '-9999px';
  textarea.style.zIndex = '-9999';
  document.body.appendChild(textarea);
  textarea.value = options.data;
  textarea.focus();
  textarea.select();

  try {
    // 执行复制操作
    const result = document.execCommand('Copy', false);
    textarea.blur();
    textarea.remove();
    if (result) {
      return {
        errMsg: 'setClipboardData:ok',
      };
    } else {
      return {
        errMsg: 'setClipboardData:fail',
      };
    }
  } catch (e) {
    // 处理异常情况
    textarea.blur();
    textarea.remove();
    return {
      errMsg: `setClipboardData:fail ${e}`,
    };
  }
}

/**
 * 获取对象键值对数据
 */
export const getObjValue = (obj: Object | undefined): [key: string, value: string | number] => {
  if (!obj) {
    return ['-', '-'];
  }
  return Object.entries(obj)[0];
};
